home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / bbs_util / bsrc_260.zip / SRC.ZIP / B_TERMOV.C < prev    next >
C/C++ Source or Header  |  1996-02-20  |  7KB  |  232 lines

  1. /*--------------------------------------------------------------------------*/
  2. /*                                                                          */
  3. /*                                                                          */
  4. /*      ------------         Bit-Bucket Software, Co.                       */
  5. /*      \ 10001101 /         Writers and Distributors of                    */
  6. /*       \ 011110 /          Freely Available<tm> Software.                 */
  7. /*        \ 1011 /                                                          */
  8. /*         ------                                                           */
  9. /*                                                                          */
  10. /*              (C) Copyright 1987-96, Bit Bucket Software Co.              */
  11. /*                                                                          */
  12. /*          This module was originally written by Vince Perriello           */
  13. /*                                                                          */
  14. /*                      BinkleyTerm Terminal Overlay                        */
  15. /*                                                                          */
  16. /*                                                                          */
  17. /*    For complete  details  of the licensing restrictions, please refer    */
  18. /*    to the License  agreement,  which  is published in its entirety in    */
  19. /*    the MAKEFILE and BT.C, and also contained in the file LICENSE.260.    */
  20. /*                                                                          */
  21. /*    USE  OF THIS FILE IS SUBJECT TO THE  RESTRICTIONS CONTAINED IN THE    */
  22. /*    BINKLEYTERM  LICENSING  AGREEMENT.  IF YOU DO NOT FIND THE TEXT OF    */
  23. /*    THIS  AGREEMENT IN ANY OF THE  AFOREMENTIONED FILES,  OR IF YOU DO    */
  24. /*    NOT HAVE THESE FILES,  YOU  SHOULD  IMMEDIATELY CONTACT BIT BUCKET    */
  25. /*    SOFTWARE CO.  AT ONE OF THE  ADDRESSES  LISTED BELOW.  IN NO EVENT    */
  26. /*    SHOULD YOU  PROCEED TO USE THIS FILE  WITHOUT HAVING  ACCEPTED THE    */
  27. /*    TERMS  OF  THE  BINKLEYTERM  LICENSING  AGREEMENT,  OR  SUCH OTHER    */
  28. /*    AGREEMENT AS YOU ARE ABLE TO REACH WITH BIT BUCKET SOFTWARE, CO.      */
  29. /*                                                                          */
  30. /*                                                                          */
  31. /* You can contact Bit Bucket Software Co. at any one of the following      */
  32. /* addresses:                                                               */
  33. /*                                                                          */
  34. /* Bit Bucket Software Co.        FidoNet  1:104/501, 1:343/491             */
  35. /* P.O. Box 460398                AlterNet 7:42/1491                        */
  36. /* Aurora, CO 80046               BBS-Net  86:2030/1                        */
  37. /*                                Internet f491.n343.z1.fidonet.org         */
  38. /*                                                                          */
  39. /* Please feel free to contact us at any time to share your comments about  */
  40. /* our software and/or licensing policies.                                  */
  41. /*                                                                          */
  42. /*--------------------------------------------------------------------------*/
  43.  
  44. /* Include this file before any other includes or defines! */
  45.  
  46. #include "includes.h"
  47.  
  48. void 
  49. ansi_map (unsigned ScanVal)
  50. {
  51.     unsigned KeyCode;
  52.  
  53.     int i;
  54.     int Len = 0;
  55.     char *Ptr = AnsiTbl;
  56.  
  57.     if (AnsiHdr->ElemCnt == 0)
  58.         return;
  59.  
  60.     for (i = 0; i < AnsiHdr->ElemCnt; i++)
  61.     {
  62.         KeyCode = *((unsigned int *) Ptr);
  63.         Ptr += sizeof (unsigned int);
  64.  
  65.         Len = (int) *Ptr++;
  66.  
  67.         if (ScanVal == KeyCode)
  68.             break;
  69.  
  70.         Ptr += Len;
  71.     }
  72.  
  73.     if (i == AnsiHdr->ElemCnt)
  74.         return;
  75.  
  76.     SENDCHARS (Ptr, Len, 0);    /* Send the mapped string   */
  77. }
  78.  
  79. int 
  80. term_overlay (short k)
  81. {
  82.     int c;
  83.     long t1;
  84.  
  85.     switch ((unsigned short) k)
  86.     {
  87.     case F_TERM_SETBAUD:
  88.         ++baud;
  89.         if (!pbtypes[baud].rate_value)
  90.             baud = 0;
  91.         program_baud ();
  92.         cur_baud = pbtypes[baud];
  93.         scr_printf (MSG_TXT (M_BINK_NOW_AT));
  94.         (void) sprintf (junk, "%lu baud.\r\n", pbtypes[baud].rate_value);
  95.         scr_printf (junk);
  96.         break;
  97.  
  98.     case F_TERM_COMMCONFIG:
  99.         scr_printf ("\r\n7 or 8 data bits? ");
  100.         (void) fgets (junk, 100, stdin);
  101.         comm_bits = (atoi (junk) == 7) ? BITS_7 : BITS_8;
  102.         if (comm_bits == BITS_8)
  103.         {
  104.             parity = NO_PARITY;
  105.         }
  106.         else
  107.         {
  108.             scr_printf ("(E)ven, (O)dd, or (N)o parity? ");
  109.             (void) fgets (junk, 100, stdin);
  110.             (void) strupr (junk);
  111.             parity = (junk[0] == 'E') ? EVEN_PARITY :
  112.                 ((junk[0] == 'O') ? ODD_PARITY : NO_PARITY);
  113.         }
  114.         scr_printf ("1 or 2 stop bits? ");
  115.         (void) fgets (junk, 100, stdin);
  116.         stop_bits = (atoi (junk) == 1) ? STOP_1 : STOP_2;
  117.  
  118.         program_baud ();
  119.         break;
  120.  
  121.     case F_TERM_DIALOUT:
  122.         scr_printf (MSG_TXT (M_PHONE_OR_NODE));
  123.         if (!get_number (junk))
  124.             break;
  125.         if (strchr (junk, '/') != NULL)
  126.         {
  127.             if (nodeproc (junk))
  128.             {
  129.                 (void) strcpy (junk, (char *) (newnodedes.PhoneNumber));
  130.                 do_dial_strings ();
  131.             }
  132.             else
  133.                 break;
  134.         }
  135.         try_2_connect (junk);    /* try to connect         */
  136.         gong ();
  137.         break;
  138.  
  139.     case F_TERM_CLEARSCREEN:
  140.         screen_clear ();
  141.         break;
  142.  
  143.     case F_TERM_HANGUP:
  144.         t1 = timerset (300);
  145.         while (CARRIER)
  146.             if (timeup (t1))
  147.             {
  148.                 scr_printf (MSG_TXT (M_NO_DROP_DTR));
  149.                 break;
  150.             }
  151.             else
  152.             {
  153.                 LOWER_DTR ();
  154.             }
  155.         status_line (MSG_TXT (M_END_OF_CONNECT));
  156.         RAISE_DTR ();
  157.         break;
  158.  
  159.     case F_TERM_REINITMODEM:
  160.         mdm_init (term_init);
  161.         break;
  162.  
  163.     case F_TERM_SHELL:
  164.         scr_printf ("\r\n");
  165.         scr_printf (&(MSG_TXT (M_SHELLING)[1]));
  166.         scr_printf (MSG_TXT (M_TYPE_EXIT));
  167.         change_prompt ();
  168.         b_spawn (NULL);
  169.         scr_printf (MSG_TXT (M_WELCOME_BACK));
  170.         break;
  171.  
  172.     case F_TERM_CHANGEPORT:
  173.         c = port_ptr;
  174.         if (++port_ptr == MAXport)
  175.             port_ptr = 0;
  176.         MDM_DISABLE ();
  177.         if (Cominit (port_ptr, buftmo) != 0x1954)
  178.         {
  179.             port_ptr = c;
  180.             (void) Cominit (port_ptr, buftmo);
  181.         }
  182.         program_baud ();
  183.         RAISE_DTR ();
  184.         scr_printf (MSG_TXT (M_BINK_NOW_USING));
  185.         WRITE_ANSI ((char) (port_ptr + '1'));
  186.         scr_printf (":\r\n");
  187.         XON_ENABLE ();
  188.         break;
  189.  
  190.     case F_TERM_DOBREAK:
  191.         if (old_fossil)
  192.         {
  193.             scr_printf (MSG_TXT (M_NO_BREAK));
  194.         }
  195.         else
  196.         {
  197.             scr_printf (MSG_TXT (M_SENDING_BREAK));
  198.             send_break (100);
  199.             scr_printf (MSG_TXT (M_DONE));
  200.         }
  201.         break;
  202.  
  203.     case F_TERM_VERSION:
  204.         scr_printf (MSG_TXT (M_YOU_ARE_USING));
  205.         scr_printf (ANNOUNCE);
  206.         scr_printf ("\r\n");
  207.         scr_printf (ver_stuff);
  208.         break;
  209.  
  210.     case F_TERM_MACRO1:
  211.     case F_TERM_MACRO2:
  212.     case F_TERM_MACRO3:
  213.     case F_TERM_MACRO4:
  214.     case F_TERM_MACRO5:
  215.     case F_TERM_MACRO6:
  216.     case F_TERM_MACRO7:
  217.     case F_TERM_MACRO8:
  218.     case F_TERM_MACRO9:
  219.         c = (int) ((unsigned short) k - (unsigned short) F_TERM_MACRO1);
  220.         if (keys[c] != NULL)
  221.         {
  222.             SENDCHARS (keys[c], strlen (keys[c]), 0);
  223.         }
  224.         break;
  225.  
  226.     default:
  227.         return (1);
  228.     }
  229.  
  230.     return (0);
  231. }
  232.